// JS 实现一个无限累加的函数
function add(a) {

    function sum(b) {
        // a = b ? a+b : 
        console.log(b,'---');
        if(b) {
            a += b;
        }else {
            return a;
        }

        return sum;
    }
    sum.valueof = () => {
        return a;
    }
    return sum;
}

console.log(add(1)(2)(3).valueof());

// 柯里化 , 柯里化的前提是无限累加的
function sum(a,b,c,d) {
    return a+b+c+d;
}

function curry(fn) {

    return function sum(...args) {
        if (args.length < fn.length) { // 函数的length值为 arguments 的个数
            return function() {
                return sum(...args,...arguments); // arguments 为前面的参数 
            }
        }
        return fn(...args);
    }

    
}

let curried = curry(sum);
curried(1)(2)(3)(4);